iT邦幫忙

2024 iThome 鐵人賽

DAY 13
0
佛心分享-我的私藏工具箱

作業系統的專武系列 第 13

超過三小時的Log檔予以刪除

  • 分享至 

  • xImage
  •  

有些專案的作業系統相對老舊,可能還沒有PowerShell或是PowerShell版本太低,而它的前身DOS Script歷史悠久,雖然可讀性差很難維護,但一樣具悠久歷史的如Tomcat、JBoss等仍舊提供bat檔作為startup、shutdown指令。
以下是DOS Script找尋超過三小時的Log檔予以刪除。rem或單引號(')開頭是DOS Script的註解,註解最後一行每個參數作用。

rem forfiles : Windows的檔案列舉工具程式
rem /p 路徑 : 指定要列舉檔案的路徑,未設定表示用目前所在目錄./
rem /s 遞迴搜尋 : 範圍包括所在目錄的子目錄
rem /m 遮罩檔名 : 例*.log是指所有副檔名為log的檔案才納入列舉範圍
rem /d 差異日數 : 檔案最後修改日期與系統日期差異日數, -60是最後修改日期超過60天,預設是+,表示最後修改日期在60天內
rem /c 命令字串 : 單行執行Command,參數字串會被當作指令來執行
rem "cmd /c del @FILE" : 單行執行刪除,@FILE是承接forfiles的列舉檔案結果。
forfiles /p C:\apache-tomcat-9.0.0.M21\logs /s /m *.log /d -60 /c "cmd /c del @FILE"

而用PowerShell也不難,指令如下:

Get-ChildItem –Path "C:\apache-tomcat-9.0.0.M21\logs" -Recurse | Where-Object {($_.LastWriteTime -lt (Get-Date).AddHours(-3))} | Remove-Item

在Unix Like系統指令相對豐富。

find /Users/jemmy/apache-tomcat-9.0.0.M21/logs -type f -name "*.log" -mmin +180 -exec rm  {} \;

-type 是尋找類型,f為檔案
-m 是修改日期,min是以分鐘為單位,而-mtime或-m預設是日,+180是超過180分鐘,-180是指180分鐘以內的檔案。倘若不帶加減號,是指剛好180分鐘或180日。
-exec 是執行後面的面令,{}則是承接前面find的結果,要用;結束。
若在AIX上設定crontab,尾巴要多一條斜線

30 17 * * * find /tmp -type f -name "*.log" -mmin +180 -exec rm  {} \\;

上一篇
用Perl移植Maven內容
下一篇
判斷作業系統是32還是64 bits
系列文
作業系統的專武30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言